package busterminal.entity;

/**
 * Остановочный пункт (реализация)
 */
public class StoppingPointImplementation extends AbstractEntityImplementation implements StoppingPoint {

    /**
     * Название остановочного пункта
     */
    private String stoppingPointName;

    /**
     * Конструктор по умолчанию
     */
    public StoppingPointImplementation() {
    }

    /**
     * Параметризованный конструктор
     * @param stoppingPointName название остановочного пункта
     */
    public StoppingPointImplementation(String stoppingPointName) {
        this.stoppingPointName = stoppingPointName;
    }

    /**
     * Получить название остановочного пункта
     * @return название остановочного пункта
     */
    @Override
    public String getStoppingPointName() {
        return stoppingPointName;
    }

    /**
     * Установить название остановочного пункта
     * @param stoppingPointName название остановочного пункта
     */
    @Override
    public void setStoppingPointName(String stoppingPointName) {
        this.stoppingPointName = stoppingPointName;
    }

    /**
     * Метод, возвращающий текстовое представление объекта
     * @return текстовое представление объекта
     */
    @Override
    public String toString() {
        return "StoppingPointImplementation{" + "id=" + getId() + ", stoppingPointName=" + stoppingPointName + '}';
    }

    /**
     * Метод, проверяющий эквивалентность двух объектов
     * @param obj объект, с которым происходит сравнение
     * @return true - объекты одинаковые, false - в противном случае
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final StoppingPointImplementation other = (StoppingPointImplementation) obj;
        if ((this.stoppingPointName == null) ? (other.stoppingPointName != null) : !this.stoppingPointName.equals(other.stoppingPointName)) {
            return false;
        }
        return true;
    }

    /**
     * Метод, возвращающий хэш-код для текущего объекта
     * @return хэш-код объекта
     */
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 71 * hash + (this.stoppingPointName != null ? this.stoppingPointName.hashCode() : 0);
        return hash;
    }

}
